package tpgrandt.UI;

import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import tpgrandt.excepciones.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author hgiacoman
 */
public class Validador {

    public static boolean isName(String nombre) throws LongitudDeCampoInvalidaException {
        if(nombre.length() > 30)
            throw new LongitudDeCampoInvalidaException();
        return true;
    }

    //metodo para validar si la fecha es correcta
    public static boolean isDate(Calendar fecha) throws FechaNacimientoInvalidaException {
        int[] dias_por_mes = new int [13];
        dias_por_mes[1] = dias_por_mes[3] = dias_por_mes[5] = dias_por_mes[7] = dias_por_mes[8] =
        dias_por_mes[10] = dias_por_mes[12] = 31;
        dias_por_mes[4] = dias_por_mes[6] = dias_por_mes[9] = dias_por_mes[11] = 30;

        int dia = fecha.get(Calendar.DAY_OF_MONTH);
        int mes = fecha.get(Calendar.MONTH) + 1;
        int anio = fecha.get(Calendar.YEAR);
        dias_por_mes[2] = esBisiesto(anio) ? 29 : 28;

        if(dia > dias_por_mes[mes])
            throw new FechaNacimientoInvalidaException();
        return true;
    }

    private static boolean esBisiesto(int anio) {
        if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0)))
            return true;
        return false;
    }

    //metodo para validar correo electronio
    public static boolean isEmail(String correo) throws EmailErroneoException {
        Pattern pat = null;
        Matcher mat = null;
        pat = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
        mat = pat.matcher(correo);
        if (mat.find()) {
            return true;
        }else{
            throw new EmailErroneoException();
        }
    }

    public static void isDocumento(Integer documento) throws DocumentoInvalidoException {
        if(documento.toString().length() != 7 && documento.toString().length() != 8)
            throw new DocumentoInvalidoException();
    }
}
